#include<iostream>
using namespace std;
template<class T1,class T2>
void initstack(T1 &s,int maxsize)
 {
	 s.base=new T2[maxsize];
	 s.stacksize=maxsize;
	 s.top=s.base;
 }

template<class T1,class T2>
void push(T1 &s,T2 e)
{
	if(s.top-s.base>=s.stacksize){cout <<"overflow"<<endl;return;}
	*s.top++=e;
}

template<class T1,class T2>
void pop(T1 &s,T2 &e)
{
	if(s.top==s.base){cout<<"empty"<<endl;return;}
	e=*--s.top;
}
template<class T>
void DestoryStack(T &s){

	delete s.base;
	s.base=NULL;
	s.top=NULL;
}

template<class T>
void print(T s){
		while(s.top>s.base)cout<<*(--s.top);
	cout<<endl;
	return;

}


template<class T1,class T2>
int gettop(T1 s,T2 &e)
{ 
	if(s.top==s.base)
	 	return 0;
    e= *(s.top-1);
		return 1;
}

